home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok82 / plot / source / reqtools.def < prev    next >
Text File  |  1993-11-04  |  16KB  |  439 lines

  1. (* ------------------------------------------------------------------------
  2.   :Program.       ReqTools
  3.   :Contents.      Interface to Nico François' reqtools.library
  4.   :Author.        Kai Bolay [kai] (C-Version by Nico François)
  5.   :Address.       Hoffmannstraße 168
  6.   :Address.       D-7250 Leonberg 1 (Germany)
  7.   :Address.       UUCP: ...!cbmvax!cbmehq!cbmger!depot1!amokle!kai
  8.   :Address.       FIDO: 2:247/706.3
  9.   :History.       v1.0 [kai] 22-Nov-91 (translated from C)
  10.   :History.       v1.0m [Frank Lömker] 24-Feb-92 Umsetzung nach Modula
  11.   :Copyright.     Freeware
  12.   :Language.      Modula-2
  13.   :Translator.    M2Amiga V4.0d
  14.   :Remark.        Thanks to Nico for his great library
  15.   :Bugs.          ReqTools/Arq should support each other
  16.   :Bugs.          Font-Hook: ta.name can contain odd pointer :-(
  17. ------------------------------------------------------------------------ *)
  18.  
  19. (*
  20. **  Filename: reqtools.mod
  21. **  Release: 1.0
  22. **  Revision: 37.3
  23. **
  24. **  Modula interface.
  25. **
  26. **  (C) Copyright 1991 Nico François
  27. **      All Rights Reserved
  28. *)
  29.  
  30. DEFINITION MODULE ReqTools{"reqtools.library",37};
  31.  
  32. FROM IntuitionD IMPORT IntuitionBasePtr,WindowPtr,ScreenPtr,NewWindow;
  33. FROM GraphicsD IMPORT GfxBasePtr,TextFontPtr,TextAttr;
  34. FROM DosD IMPORT DosLibraryPtr;
  35. FROM ExecD IMPORT Library,LibraryPtr;
  36. FROM SYSTEM IMPORT ADDRESS,SHORTSET,LONGSET,BPTR;
  37. FROM UtilityD IMPORT HookPtr,TagItem,TagItemPtr,Tag,tagUser;
  38.  
  39. TYPE STRPTR=ADDRESS;
  40. CONST
  41.   ReqToolsName = "reqtools.library";
  42.   ReqToolsVersion = 37;
  43.  
  44. TYPE
  45.   ReqToolsBasePtr = POINTER TO ReqToolsBase;
  46.  
  47. VAR reqToolsVersion:INTEGER;
  48.     reqToolsBase:ReqToolsBasePtr;
  49.  
  50. TYPE
  51.   ReqToolsBase = RECORD
  52.     libNode: Library;
  53.     flags: SHORTSET;
  54.     pad: ARRAY [0..2] OF SHORTINT;
  55.     segList: BPTR;
  56.     (* The following library bases may be read and used by your program *)
  57.     intuitionBase: IntuitionBasePtr;
  58.     gfxBase: GfxBasePtr;
  59.     dosBase: DosLibraryPtr;
  60.     (* Next two library bases are only (and always) valid on Kickstart 2.0!
  61.        (1.3 version of reqtools also initializes these when run on 2.0) *)
  62.     gadToolsBase: LibraryPtr;
  63.     utilityBase: LibraryPtr;
  64.   END;
  65.  
  66. CONST
  67.   (* types of requesters, for AllocRequestA() *)
  68.   TypeFileReq = 0;
  69.   TypeReqInfo = 1;
  70.   TypeFontReq = 2;
  71.  
  72. (***********************
  73. *                      *
  74. *    File requester    *
  75. *                      *
  76. ***********************)
  77.  
  78. (* structure _MUST_ be allocated with AllocRequest() *)
  79.  
  80. TYPE
  81.   FileRequesterPtr = POINTER TO FileRequester;
  82.   FileRequester = RECORD
  83.     reqPos: LONGINT;
  84.     leftOffset: INTEGER;
  85.     topOffset: INTEGER;
  86.     flags: LONGSET;
  87.     hook: HookPtr;
  88.     dir: STRPTR;                (* READ ONLY! Change with ChangeReqAttrA()! *)
  89.     matchPat: STRPTR;           (* READ ONLY! Change with ChangeReqAttrA()! *)
  90.     defaultFont: TextFontPtr;
  91.     waitPointer: ADDRESS;
  92.     (* Lots of private data follows! HANDS OFF :-) *)
  93.   END;
  94.  
  95. (* returned by FileRequestA() if multiselect is enabled,
  96.    free list with FreeFileList() *)
  97.  
  98.   FileListPtr = POINTER TO FileList;
  99.   FileList = RECORD
  100.     next: FileListPtr;
  101.     strLen: LONGINT;  (* -1 for directories *)
  102.     name: STRPTR;
  103.   END;
  104.  
  105. (***********************
  106. *                      *
  107. *    Font requester    *
  108. *                      *
  109. ***********************)
  110.  
  111. (* structure _MUST_ be allocated with AllocRequest() *)
  112.  
  113.   FontRequesterPtr = POINTER TO FontRequester;
  114.   FontRequester = RECORD
  115.     reqPos: LONGINT;
  116.     leftOffset: INTEGER;
  117.     topOffset: INTEGER;
  118.     flags: LONGSET;
  119.     hook: HookPtr;
  120.     attr: TextAttr;  (* READ ONLY! *)
  121.     defaultFont: TextFontPtr;
  122.     waitPointer: ADDRESS;
  123.     (* Lots of private data follows! HANDS OFF :-) *)
  124.   END;
  125.  
  126. (***********************
  127. *                      *
  128. *    Requester Info    *
  129. *                      *
  130. ***********************)
  131.  
  132.   (* for EZRequestA(), GetLongA(), GetStringA() and PaletteRequestA(),
  133.    _MUST_ be allocated with AllocRequest() *)
  134.  
  135.   ReqInfoPtr = POINTER TO ReqInfo;
  136.   ReqInfo = RECORD
  137.     reqPos: LONGINT;
  138.     leftOffset: INTEGER;
  139.     topOffset: INTEGER;
  140.     width: LONGINT;              (* not for EZRequestA() *)
  141.     reqTitle: STRPTR;            (* currently only for EZRequestA() *)
  142.     flags: LONGSET;              (* only for EZRequestA() *)
  143.     defaultFont: TextFontPtr;    (* currently only for PaletteRequestA() *)
  144.     waitPointer: ADDRESS;
  145.     (* structure may be extended in future *)
  146.   END;
  147.  
  148. (***********************
  149. *                      *
  150. *     Handler Info     *
  151. *                      *
  152. ***********************)
  153.  
  154. (* for ReqHandlerA(), will be allocated for you when you use
  155.    the ReqHandler tag, never try to allocate this yourself! *)
  156.  
  157.   HandlerInfoPtr = POINTER TO HandlerInfo;
  158.   HandlerInfo = RECORD
  159.     private1: LONGINT;
  160.     waitMask: LONGSET;
  161.     doNotWait: LONGINT (* LONGBOOL *); (* ? *)
  162.     (* Private data follows, HANDS OFF :-) *)
  163.   END;
  164.  
  165. (* possible return codes from ReqHandlerA() *)
  166. CONST
  167.   CallHandler = 080000000H;
  168.  
  169.  
  170. (*************************************
  171. *                                    *
  172. *                TAGS                *
  173. *                                    *
  174. *************************************)
  175.  
  176.   TagBase = tagUser;
  177.  
  178.   (*** tags understood by most requester functions ***)
  179.    (* optional pointer to window *)
  180.   Window = TagBase+1;
  181.    (* idcmp flags requester should abort on (useful for IDCMP_DISKINSERTED) *)
  182.   IDCMPFlags = TagBase+2;
  183.    (* position of requester window (see below) - default REQPOS_POINTER *)
  184.   ReqPos = TagBase+3;
  185.    (* signal mask to wait for abort signal *)
  186.   LeftOffset = TagBase+4;
  187.    (* topedge offset of requester relative to position specified by ReqPos *)
  188.   TopOffset = TagBase+5;
  189.    (* name of public screen to put requester on (Kickstart 2.0 only!) *)
  190.   PubScrName = TagBase+6;
  191.    (* address of screen to put requester on *)
  192.   Screen = TagBase+7;
  193.    (* tagdata must hold the address of (!) an APTR variable *)
  194.   DoReqHandler = TagBase+8;
  195.    (* font to use when screen font is rejected, _MUST_ be fixed-width font!
  196.     (struct TextFont *, not struct TextAttr *!)
  197.     - default GfxBase->DefaultFont *)
  198.   DefaultFont = TagBase+9;
  199.    (* boolean to set the standard wait pointer in window - default FALSE *)
  200.   WaitPointer = TagBase+10;
  201.  
  202.   (*** tags specific to EZRequestA ***
  203.   *)
  204.    (* title of requester window - default "Request" or "Information" *)
  205.   ezReqTitle = TagBase+20;
  206.    (* TagBase+21 reserved *)
  207.    (* various flags (see below) *)
  208.   ezFlags = TagBase+22;
  209.    (* default response (activated by pressing RETURN) - default TRUE *)
  210.   ezDefaultResponse = TagBase+23;
  211.  
  212. (*** tags specific to GetLongA ***
  213. *)
  214.    (* minimum allowed value - default MININT *)
  215.   glMin = TagBase+30;
  216.    (* maximum allowed value - default MAXINT *)
  217.   glMax = TagBase+31;
  218.    (* suggested width of requester window (in pixels) *)
  219.   glWidth = TagBase+32;
  220.    (* boolean to show the default value - default TRUE *)
  221.   glShowDefault = TagBase+33;
  222.  
  223. (*** tags specific to GetStringA ***
  224. *)
  225.    (* suggested width of requester window (in pixels) *)
  226.   gsWidth = glWidth;
  227.    (* allow empty string to be accepted - default FALSE *)
  228.   gsAllowEmpty = TagBase+80;
  229.  
  230. (*** tags specific to FileRequestA ***
  231. *)
  232.    (* various flags (see below) *)
  233.   fiFlags = TagBase+40;
  234.    (* suggested height of file requester *)
  235.   fiHeight = TagBase+41;
  236.    (* replacement text for 'Ok' gadget (max 6 chars) *)
  237.   fiOkText = TagBase+42;
  238.  
  239. (*** tags specific to FontRequestA ***
  240. *)
  241.    (* various flags (see below) *)
  242.   foflags = fiFlags;
  243.    (* suggested height of font requester *)
  244.   foHeight = fiHeight;
  245.    (* replacement text for 'Ok' gadget (max 6 chars) *)
  246.   foOkText = fiOkText;
  247.    (* suggested height of font sample display - default 24 *)
  248.   foSampleHeight= TagBase+60;
  249.    (* minimum height of font displayed *)
  250.   foMinHeight = TagBase+61;
  251.    (* maximum height of font displayed *)
  252.   foMaxHeight = TagBase+62;
  253.    (* [TagBase+63 to TagBase+66 used below] *)
  254.  
  255. (*** tags for ChangeReqAttrA ***
  256. *)
  257.    (* file requester - set directory *)
  258.   fiDir = TagBase+50;
  259.    (* file requester - set wildcard pattern *)
  260.   fiMatchPat = TagBase+51;
  261.    (* file requester - add a file or directory to the buffer *)
  262.   fiAddEntry = TagBase+52;
  263.    (* file requester - remove a file or directory from the buffer *)
  264.   fiRemoveEntry = TagBase+53;
  265.    (* font requester - set font name of selected font *)
  266.   foFontName = TagBase+63;
  267.    (* font requester - set font size *)
  268.   foFontHeight = TagBase+64;
  269.    (* font requester - set font style *)
  270.   foFontStyle = TagBase+65;
  271.    (* font requester - set font flags *)
  272.   foFontFlags = TagBase+66;
  273.  
  274. (*** tags for PaletteRequestA ***
  275. *)
  276.    (* initially selected color - default 1 *)
  277.   paColor = TagBase+70;
  278.  
  279. (*** tags for ReqHandlerA ***
  280. *)
  281.    (* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or
  282.     in case of EZRequest to the return value *)
  283.   rhEndRequest = TagBase+60;
  284.  
  285. (*** tags for AllocRequestA ***)
  286.   (* no tags defined yet *)
  287.  
  288.  
  289. (************
  290. * ReqPos *
  291. ************)
  292.   ReqPosPointer = 0;
  293.   ReqPosCenterWin = 1;
  294.   ReqPosCenterScr = 2;
  295.   ReqPosTopLeftWin = 3;
  296.   ReqPosTopLeftScr = 4;
  297.  
  298. (******************
  299. * RTRH_EndRequest *
  300. ******************)
  301.   ReqCancel = 0;
  302.   ReqOK = 1;
  303.  
  304. (***************************************
  305. * flags for RTFI_Flags and RTFO_Flags  *
  306. * or filereq->Flags and fontreq->Flags *
  307. ***************************************)
  308.   fReqNoBuffer = 2;
  309.   fReqDoWildFunc = 11;
  310.  
  311. (*****************************************
  312. * flags for RTFI_Flags or filereq->Flags *
  313. *****************************************)
  314.   fReqMultiSelect = 0;
  315.   fReqSave = 1;
  316.   fReqNoFiles = 3;
  317.   fReqPatGad = 4;
  318.   fReqSelectDirs = 12;
  319.  
  320. (*****************************************
  321. * flags for RTFO_Flags or fontreq->Flags *
  322. *****************************************)
  323.   fReqFixedWidth = 5;
  324.   fReqColorFonts = 6;
  325.   fReqChangePalette = 7;
  326.   fReqLeavePalette = 8;
  327.   fReqScale = 9;
  328.   fReqStyle = 10;
  329.  
  330. (*****************************************
  331. * flags for RTEZ_Flags or reqinfo->Flags *
  332. *****************************************)
  333.   ezReqNoReturnKey = 0;
  334.   ezReqLamigaQual = 1;
  335.   ezReqCenterText = 2;
  336.  
  337. (********
  338. * hooks *
  339. ********)
  340.   ReqHookWildFile = 0;
  341.   ReqHookWildFont = 1;
  342.  
  343. PROCEDURE AllocRequestA (type{0}: LONGINT;
  344.                          tagList{8}: TagItemPtr): ADDRESS;        CODE -30;
  345. PROCEDURE AllocRequest (type{0}: LONGINT;
  346.                         tag1{8}: TagItemPtr): ADDRESS;            CODE -30;
  347. PROCEDURE FreeRequest (req{9}: ADDRESS);                          CODE -36;
  348. PROCEDURE FreeReqBuffer (req{9}: ADDRESS);                        CODE -42;
  349. PROCEDURE ChangeReqAttrA (req{9}: ADDRESS;
  350.                           tagList{8}: TagItemPtr);                CODE -48;
  351. PROCEDURE ChangeReqAttr (req{9}: ADDRESS;
  352.                          tag1{8}: TagItemPtr);                    CODE -48;
  353. PROCEDURE FileRequestA (fileReq{9}: FileRequesterPtr;
  354.                 (*VAR*) fileName{10}: ADDRESS (*ARRAY OF CHAR*);
  355.                         title{11}: ADDRESS (*ARRAY OF CHAR*);
  356.                         tagList{8}: TagItemPtr): BOOLEAN;         CODE -54;
  357. PROCEDURE FileRequest (fileReq{9}: FileRequesterPtr;
  358.                (*VAR*) fileName{10}: ADDRESS (*ARRAY OF CHAR*);
  359.                        title{11}: ADDRESS (*ARRAY OF CHAR*);
  360.                        tag1{8}: TagItemPtr): BOOLEAN;             CODE -54;
  361. PROCEDURE FreeFileList (fileList{8}: FileListPtr);                CODE -60;
  362.  
  363. (* Die nächsten 6 Prozeduren können nicht direkt aus Modula benutzt werden,
  364.    da sie das Register A4 benötigen. Statt dessen können die Prozeduren aus
  365.    ReqToolsSupport benutzt werden. *)
  366.  
  367. PROCEDURE EZRequestA (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  368.                       reqInfo{11}: ReqInfoPtr;
  369.                       argarray{12}: ADDRESS;
  370.                       tagList{8}: TagItemPtr): LONGINT;           CODE -66;
  371. PROCEDURE EZRequestTags (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  372.                          reqInfo{11}: ReqInfoPtr;
  373.                          argarray{12}: ADDRESS;
  374.                          tag1{8}: TagItemPtr):LONGINT;            CODE -66;
  375. PROCEDURE EZRequest (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  376.                      reqInfo{11}: ReqInfoPtr;
  377.                      tagList{8}: TagItemPtr;
  378.                      argarray{12}: ADDRESS (*LONGINT*)): LONGINT; CODE -66;
  379. (* Without result.... *)
  380. PROCEDURE vEZRequestA (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  381.                        reqInfo{11}: ReqInfoPtr;
  382.                        argarray{12}: ADDRESS;
  383.                        tagList{8}: TagItemPtr);                   CODE -66;
  384. PROCEDURE vEZRequestTags (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  385.                           reqInfo{11}: ReqInfoPtr;
  386.                           argarray{12}: ADDRESS;
  387.                           tag1{8}: TagItemPtr);                   CODE -66;
  388. PROCEDURE vEZRequest (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  389.                       reqInfo{11}: ReqInfoPtr;
  390.                       tagList{8}: TagItemPtr;
  391.                       argarray{12}: ADDRESS (*LONGINT*));         CODE -66;
  392. PROCEDURE GetStringA ((*VAR*) buffer{9}: ADDRESS (*ARRAY OF CHAR*);
  393.                       maxchars{0}: LONGINT;
  394.                       title{10}: ADDRESS (*ARRAY OF CHAR*);
  395.                       reqInfo{11}: ReqInfoPtr;
  396.                       tagList{8}: TagItemPtr): BOOLEAN;           CODE -72;
  397. PROCEDURE GetString ((*VAR*) buffer{9}: ADDRESS (*ARRAY OF CHAR*);
  398.                      maxchars{0}: LONGINT;
  399.                      title{10}: ADDRESS (*ARRAY OF CHAR*);
  400.                      reqInfo{11}: ReqInfoPtr;
  401.                      tag1{8}: TagItemPtr): BOOLEAN;               CODE -72;
  402. PROCEDURE GetLongA (VAR long{9}: LONGINT; title{10}: ADDRESS (*ARRAY OF CHAR*);
  403.                     reqInfo{11}: ReqInfoPtr;
  404.                     tagList{8}: TagItemPtr): BOOLEAN;             CODE -78;
  405. PROCEDURE GetLong (VAR long{9}: LONGINT; title{10}: ADDRESS (*ARRAY OF CHAR*);
  406.                    reqInfo{11}: ReqInfoPtr;
  407.                    tag1{8}: TagItemPtr): BOOLEAN;                 CODE -78;
  408. PROCEDURE FontRequestA (fontReq{9}: FontRequesterPtr;
  409.                         title{11}: ADDRESS (*ARRAY OF CHAR*);
  410.                         tagList{8}: TagItemPtr): BOOLEAN  ;       CODE -96;
  411. PROCEDURE FontRequest (fontReq{9}: FontRequesterPtr;
  412.                        title{11}: ADDRESS (*ARRAY OF CHAR*);
  413.                        tag1{8}: TagItemPtr):BOOLEAN  ;            CODE -96;
  414. PROCEDURE PaletteRequestA (title{10}: ADDRESS (*ARRAY OF CHAR*);
  415.                            reqInfo{11}: ReqInfoPtr;
  416.                            tagList{8}: TagItemPtr): LONGINT;      CODE -102;
  417. PROCEDURE PaletteRequest (title{10}: ADDRESS (*ARRAY OF CHAR*);
  418.                           reqInfo{11}: ReqInfoPtr;
  419.                           tag1{8}: TagItemPtr): LONGINT;          CODE -102;
  420. PROCEDURE ReqHandlerA (hinfo{9}: HandlerInfoPtr;
  421.                        sigs{0}: LONGSET;
  422.                        tagList{8}: TagItemPtr): LONGINT;          CODE -108;
  423. PROCEDURE ReqHandler (hinfo{9}: HandlerInfoPtr;
  424.                       sigs{0}: LONGSET;
  425.                       tag1{8}: TagItemPtr): LONGINT;              CODE -108;
  426. PROCEDURE SetWaitPointer (window{8}: WindowPtr);                  CODE -114;
  427. PROCEDURE GetVScreenSize (screen{8}: ScreenPtr;
  428.                           VAR width{9},height{10}: LONGINT);      CODE -120;
  429. PROCEDURE SetReqPosition (reqpos{0}: LONGINT;
  430.                           VAR nw{8}: NewWindow;
  431.                           screen{9}: ScreenPtr;
  432.                           window{10}: WindowPtr);                 CODE -126;
  433. PROCEDURE Spread ((*VAR*) posarray{8}: ADDRESS (*ARRAY OF LONGINT*);
  434.                   sizearray{9}: ADDRESS (*ARRAY OF LONGINT*);
  435.                   totalsize{0}, min{1}, max{2}, num{3}: LONGINT); CODE -132;
  436. PROCEDURE ScreenToFrontSafely (screen{8}: ScreenPtr);             CODE -138;
  437.  
  438. END ReqTools.
  439.